問題の説明
VBAコードがセルをアクティブにしない (VBA code not activating cell)
コードに問題があるようです。しかし、私は問題を理解することができません。ワークブックに 2 つのタブがあります。メインシートとサブシート。メインシートのドロップダウンで「はい」を選択すると、サブシートへの入力が有効になります。メイン シートのドロップダウンで [いいえ] を選択すると、サブシートのセルが無効になります。
私の問題 : [いいえ] を選択すると、どのシートにも [アクティブ セル] が表示されません。 . アクティブ セルとは、セルをクリックしたときに表示される緑色の境界線のことです (スクリーンショットを添付)。
メイン シートのコード
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Not Intersect(Target, Range("R12")) Is Nothing Then
If Target.Value = "YES" Then
Call Enabler
Else
Call Disabler
End If
End If
Application.EnableEvents = True
End Sub
モジュールのコード<
リファレンスソリューション
方法 1:
Something like the following should work for you...
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo ExitSub
Application.EnableEvents = False
If Target.Address <> "$R$12" Then Exit Sub
If Target.Value = "YES" Then
Call LockRange(False)
Else
Call LockRange(True)
End If
ExitSub:
Application.EnableEvents = True
End Sub
Private Function LockRange(bFlag As Boolean) As Boolean
On Error Resume Next
With ThisWorkbook.Sheets("SubSheet")
.Unprotect Password:="xyz"
.Range("E13:E14").Locked = bFlag
.Protect Password:="xyz"
'Debug.Print bFlag
End With
LockRange = True
End Function
方法 2:
I guess you have to type in:
.EnableSelection = xlNoRestrictions
BTW you may want to shorten your code by merging Disabler()
and Enabler()
subs into one Sub:
Public Sub DisableSubSheet(disable As Boolean)
With ThisWorkbook.Worksheets("SubSheet")
.Unprotect Password:="xyz"
.Range("E13:E14").Locked = disable
.Protect Password:="xyz"
.EnableSelection = xlNoRestrictions '<‑‑| make it possible for user to select cells
End With
End Sub
thus, changing your Worksheet_Change
event handler code as follows:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Not Intersect(Target, Range("R12")) Is Nothing Then
If Target.Value = "YES" Then
DisableSubSheet False '<‑‑| in place of previous 'Call Enabler'
Else
DisableSubSheet True '<‑‑| in place of previous 'Call Disabler'
End If
End If
Application.EnableEvents = True
End Sub
(by sady、Tragamor、user3598756)